www.gusucode.com > XerCMS 携云PHP企业建站程序 v2015PHP源码程序 > XerCMS 携云PHP企业建站程序 v2015/XerCMS_v20150724/XerCMS_v20150724/XerCMS/Services/admin/forum.php

    <?php
/**
 * @name     XERCMS
 * @author   Arno <XerCMS@163.com> [QQ:1328013]
 * @version  1.0.0
 * @link     http://www.XerCMS.com
 */
  
!defined('XERCMS') && exit('Access Denied');

class Service_admin_forum extends admin
{
     function xercms() {
		$this->showboard();
	}
	
     function updateboard() {
		$bid = int1(g('bid'));
          $board = p('board');
          $setting = p('setting');
          $board['admin'] = empty($board['admin']) ? array() : explode(',',$board['admin']);
          ini('forum/board/'.$bid,$board);
          ini('forum/board/'.$bid,$setting);
  
          $board['admin'] = implode(',',$board['admin']); 
          $board['template'] = jsonSql($board['template']);
          DB::update('xercms_forum_board',$board,'bid = '.$bid);
          DB::update('xercms_board_setting',$setting,'bid = '.$bid);         
          $this->setModerator($bid,$board['admin']);        
          CACHE::forum_board($bid);
          $this->tips(11);
     } 
	
     function editboard() {
          $bid = int1(g('bid'));
          $boardsetting = ini('forum/board/'.$bid);$boardsetting['admin'] = empty($boardsetting['admin']) ? '' : implode(',',$boardsetting['admin']);
          $cats = DB::fetch_all('select * from xercms_topic_category');
		include_once($this->tpl('forum.htm'));	
     }
	
	function moderators() {
		$page = int1(g('page'));
		$moderators = DB::fetch_all('SELECT m.*,p.nick,b.name,s.time FROM xercms_forum_moderator m 
		               LEFT JOIN xercms_member_profile p ON p.uid = m.uid
					LEFT JOIN xercms_member_session s ON s.uid = m.uid 
                         LEFT JOIN xercms_forum_board b ON b.bid = m.bid
					LIMIT '.(($page - 1)*30).',30');
          include_once($this->tpl('forum.htm'));
	}
	
     function cats() {
	     global $G;
          $cats = DB::data('select * from xercms_topic_category');
		include_once($this->tpl('forum.htm'));		
     }
	
     function updatecat() {
          $id = int1(g('id'));$data = p('data');
          DB::update('xercms_topic_category',$data,'id = '.$id);
          $this->tips(11,'?s=admin&e=forum&a=cats');
     }
	
     function insertcat() {
          $id = int1(g('id'));$data = p('data');
          DB::insert('xercms_topic_category',$data);
          $this->tips(11,'?s=admin&e=forum&a=cats');
     }
	
     function delcat() {
          $id = int1(g('id'));
          DB::delete('xercms_topic_category',array('id'=>$id));
		$rows = DB::affected_rows();
		if($rows) {
          	$this->tips('删除成功。','?s=admin&e=forum&a=cats');	
		} else $this->tips('删除失败。','?s=admin&e=forum&a=cats');	
     }
	
     function updateaccess() {
          $bid = int1(g('bid'));
          $access = p('forum');
          ini('forum/board/'.$bid,$access);

          DB::update('xercms_board_setting',array('access'=>jsonSql($access)),'bid = '.$bid);
          $this->tips(11);
     } 
	
     function updatecredits() {
          $bid = int1(g('bid'));$credits = p('credits');$credit = array();
          foreach($credits['credits'] as $k=>$v) {
               $credit['credit'][$k] = array();
               $credit['credit'][$k][strtr($v['type'],array('credit'=>''))] = $v['op']; 
          }
          ini('forum/board/'.$bid,$credit);          
          DB::update('xercms_board_setting',array('credit'=>jsonSql($credit['credit'])),'bid = '.$bid);     
          $this->tips(11);
     }
	
     function editaccess() {
          $bid = int1(g('bid'));
          $boardsetting = ini('forum/board/'.$bid);
          //$boardsetting['access'] = $boardsetting['thread'];
          $group = ini('member/groups');
		include_once($this->tpl('forum.htm'));
     }
	
     function editcredits() {
          $bid = int1(g('bid'));$group = ini('member/groups');
          $boardsetting = ini('forum/board/'.$bid);$temp = array();
          foreach($boardsetting['credit'] as $k=>$v) {
               $boardsetting['credit'][$k] = array();
               list($boardsetting['credit'][$k]['type'],$boardsetting['credit'][$k]['op']) = each($v);
			$boardsetting['credit'][$k]['type'] = 'credit'.$boardsetting['credit'][$k]['type'];
          }
          $configs = rs('config')->search(array('file'=>'globals','tag'=>'credits'));
          $credits = is_array($configs['content']) ? $configs['content'] : array();
          //print_r($boardsetting);exit;
		include_once($this->tpl('forum.htm'));
     }
	
     function showboard() {
          global $boards;
          $boards = array();      
          $this->forum_boards();

		include_once($this->tpl('forum.htm'));
     }
	
     function commentstate() {
          $id = int1(g('id'));$state = (int)g('state');
          DB::query('update xercms_forum_comment set state = \''.$state.'\' where id = \''.$id.'\'');
          $this->tips(11,'?s=admin&e=forum&a=showcomments');
     }
	
     function updatestate() {
          $tid = int1(g('tid'));$state = (int)g('state');
          DB::query('update xercms_forum_topic set state = \''.$state.'\' where tid = \''.$tid.'\'');
          $this->tips(11,'?s=admin&e=forum&a=showtopics');
     }
	
     function postsstate() {
          $pid = int1(g('pid'));$state = (int)g('state');
          DB::query('update xercms_forum_posts set state = \''.$state.'\' where pid = \''.$pid.'\'');
          $this->tips(11,'?s=admin&e=forum&a=showposts');
     }
	
     function showtopics() { 
          $page = int1(g('page'));
          $topics = DB::fetch_all('SELECT t.*,b.name as board,m.nick as author FROM xercms_forum_topic t,xercms_member_profile m,xercms_forum_board b WHERE t.bid = b.bid AND t.uid = m.uid LIMIT '.(($page-1)*30).',30');
          $topics_total = DB::result_first('SELECT count(*) FROM xercms_forum_topic t,xercms_member_profile m,xercms_forum_board b where t.bid = b.bid AND t.uid = m.uid');
          $pagehtml = multi($topics_total/30,$page);
		include_once($this->tpl('forum.htm'));
     }
	
     function showcomments() {
          $page = int1(g('page'));
          $comments = DB::data('select c.*,p.nick from xercms_forum_comment c left join xercms_member_profile p on p.uid = c.uid ORDER BY c.state ASC,id DESC ',(($page-1)*30).',30');
          foreach($comments as $k=>$v) {
               $comments[$k]['credit'] = 'credit'.$v['credit'];
          }
          $topics_total = DB::count('xercms_forum_comment');  
		$pagehtml = multi($topics_total/30,$page);
		include_once($this->tpl('forum.htm'));
     }
	
     function showposts() {
          $page = int1(g('page'));
          $posts = DB::fetch_all('SELECT p.*,m.nick as author from xercms_forum_posts p,xercms_member_profile m WHERE p.uid = m.uid LIMIT '.(($page-1)*30).',30');
          $posts_total = DB::result_first('SELECT count(*) FROM xercms_forum_posts p,xercms_member_profile m WHERE p.uid = m.uid');
          $pagehtml = multi($posts_total/30,$page);
		include_once($this->tpl('forum.htm'));
     }
	
     function delposts() {
          $pid = g('pid');
          DB::delete('xercms_forum_posts',array('pid'=>$pid));  
          $this->tips(11,'?s=admin&e=forum&a=showposts');  
     }
	
     function del() {
          $bid = g('bid');
	     $all = rs('forum')->board_count();
	     if($all <= 1) {
               $this->tips('board_exists_one');
          }
	     $son = rs('forum')->board_count($bid);
	     if($son <= 0) {
               if(file_exists(INC.'Data/forum/board/'.$bid.'.php')) 
                    unlink(INC.'Data/forum/board/'.$bid.'.php');
               rs('forum')->delboard($bid);
          } else $this->tips('board_exists_son');
          $this->tips(11);
     }
	
     function delModerator() {
          $bid = (int)g('bid');$uid = (int)g('uid');
          if($bid && $uid) {
               DB::delete('xercms_forum_moderator',array('bid'=>$bid,'uid'=>$uid));
               $board = ini('forum/board/'.$bid);
               $uids = DB::fetch_all('SELECT uid FROM xercms_forum_moderator WHERE bid = \''.$bid.'\'');
               $admin = array();
               foreach($uids as $uid) {
                    $admin[] = $uid['uid'];
               }
               ini('forum/board/'.$bid,array('admin'=>$admin));
          }
          $this->tips(11);
     }
     
     function setModerator($bid,$uids) {
          if(empty($bid) || empty($uids)) {
               return;
          }
          DB::delete('xercms_forum_moderator',array('bid'=>$bid));
          if(is_string($uids)) {
               $uids = explode(',',$uids);
          }
          foreach($uids as $uid) {
               DB::insert('xercms_forum_moderator',array('bid'=>$bid,'admin'=>X::$G['uid'],'uid'=>$uid,'time'=>X::$G['time']));
          }
     }
     
     function insertboard() {
	     $board = p('board');
          $boardFile = ini('forum/board/'.$board['parent']);
	     $board = array_merge($boardFile,$board);
          $SettingFile = array(
               'bid'=>0,
          	'access'=>$boardFile['access'],
               'credit'=>$boardFile['credit'],
          	'opencat'=>$boardFile['opencat'],
          	'mustcat'=>$boardFile['mustcat'],
          	'cats'=>$boardFile['cats'],           
          	'audit'=>$boardFile['audit'],  
          	'by'=>$boardFile['by'],    
          	'order'=>$boardFile['order'],     
          	'number'=>$boardFile['number'],   
          	'showrely'=>$boardFile['showrely'],  
          	'resttime'=>$boardFile['resttime'],              
          );
          
          foreach($SettingFile as $k=>$v) {
               unset($board[$k]);
          }
          $boardSql = $board;
          $boardSql['template'] = jsonSql($boardSql['template']);
          $boardSql['admin'] = empty($boardSql['admin']) ? '' : implode(',',$boardSql['admin']);
          
          $bid = DB::insert('xercms_forum_board',$boardSql);
          $SettingFile['bid'] = $bid;
          $this->setModerator($bid,$boardSql['admin']);
          $SettingSql = array(
               'bid'=>$bid,
          	'access'=>jsonSql($SettingFile['access']),
               'credit'=>jsonSql($SettingFile['credit']),
          	'opencat'=>$SettingFile['opencat'],
          	'mustcat'=>$SettingFile['mustcat'],
          	'cats'=>jsonSql($SettingFile['cats']),           
          	'audit'=>$SettingFile['audit'],  
          	'by'=>$SettingFile['by'],    
          	'order'=>$SettingFile['order'],     
          	'number'=>$SettingFile['number'],   
          	'showrely'=>$SettingFile['showrely'],  
          	'resttime'=>$SettingFile['resttime'],              
          );    
          
          DB::insert('xercms_board_setting',$SettingSql);
          
          $data = array_merge($board,$SettingFile);

          ini('forum/board/'.$bid,$data);
	     
          CACHE::forum_board($bid);
          $this->tips(11);
     }
	
     function editboardname() {
	     $board = p('board');
          foreach($board as $k=>$v) {
               if(!empty($v['name'])) {
                    ini('forum/board/'.$k,'name',$v['name']);
                    DB::update('xercms_forum_board',array('name'=>$v['name']),'bid = '.$k);
                    CACHE::forum_board($k);
               }
          }
          $this->tips(11);
     }  
  

     function forum_boards($top = 0,$layer = 0) {
          global $boards;
          $res = DB::query('select * from xercms_forum_board where parent = '.$top);
          while(is_resource($res) && $data = DB::fetch($res)) {
               $data['layer'] = $layer;
               $boards[] = $data;
               $this->forum_boards($data['bid'],($layer + 1));
          }
     }

     function postsdata($id) {
          if($id == 0) {
               global $time;
               return array('tag'=>'','id'=>'','tid'=>'','title'=>'','aid'=>'','hit'=>'','flower'=>'','egg'=>'','score'=>'','updated'=>'','content'=>'','addtime'=>$time);
          }
          $res = DB::query('SELECT * FROM xercms_club_posts a,xercms_posts_article b WHERE a.id = \''.$id.'\' AND a.id = b.id');
          $posts = array();
          $res && $posts = DB::farray($res);
          return $posts; 
     }

     function postslist($page) {
          $res = DB::query('SELECT * FROM xercms_club_posts ORDER BY updated DESC LIMIT '.($page*15).',15');
          $posts = array();
          while($res && $temp = DB::farray($res)) {
               if(isset($temp['title']) && !empty($temp['title'])) {
                    $posts[] = $temp;
               }
          }
          return $posts; 
     }

     function postsdel($id) {
          $res = DB::query('DELETE FROM xercms_club_posts WHERE id = \''.$id.'\'');
     }

     function postsupdate($id,$fid,$title,$tag,$content) {
          DB::query('UPDATE xercms_club_posts SET fid = \''.$fid.'\',title = \''.$title.'\',,updated = \''.X::$G['time'].'\' WHERE id = \''.$id.'\'');
          DB::query('UPDATE xercms_posts_article SET tag = \''.$tag.'\',content = \''.$content.'\' WHERE id = \''.$id.'\'');
     }

     function postsadd($fid,$title,$tag,$content) {
          $res = DB::query('INSERT INTO xercms_club_posts VALUES (NULL,\''.$title.'\',\''.$_SESSION['uid'].'\',0,\''.$fid.'\',\'0\',\'0\',\''.X::$G['time'].'\',\''.X::$G['time'].'\')');
          $id = DB::lastid();
          $res = DB::query('INSERT INTO xercms_posts_article VALUES (\''.$id.'\',\''.$tag.'\',\''.$content.'\')');
     }
}
?>